package home;

import java.util.List;

import modelo.Asiento;
import modelo.Usuario;
import modelo.tp2.Tramo;

import org.hibernate.Query;
import org.hibernate.Session;

import DAO.GenericDao;
import persistencia.CreadorSesiones;

public class HomePersistenciaHibernate {


	@SuppressWarnings("unchecked")
	public List<Asiento> asientosDisponiblesDe(Tramo tramo) {
		return CreadorSesiones.getSession().createQuery(
			    "select asiento from Tramo as tramo inner join tramo.asientos as asiento "
			    + "where asiento.usuario is null and tramo.idTramo = :idDelTramo")
			    .setInteger("idDelTramo", tramo.getIdTramo())
			    .list();
	}
	
	@SuppressWarnings("unchecked")
	public List<Asiento> asientosDeUsuario(Usuario usuario) {
		return CreadorSesiones.getSession().createQuery(
			    "select asiento from Tramo as tramo inner join tramo.asientos as asiento "
			    + "where asiento.usuario= :user")
			    .setString("user", usuario.getNombre_usuario())
			    .list();
	}
	
	public void asignarAsientosDeA(Usuario usuario, List<Asiento> asientosDisponibles, int cantAsientos){
		GenericDao<Asiento> DAO = new GenericDao<Asiento>(Asiento.class);
		int counter=cantAsientos;
		for(Asiento a : asientosDisponibles){
			if(  counter > 0){
				a.setUsuario(usuario);
				counter --;
			}
		}
		DAO.saveAll(asientosDisponibles);
	}
}